package cn.iocoder.yudao.module.crossborder.order.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 订单项信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 订单项信息 DTO")
@Data
public class OrderItemDTO {

    @Schema(description = "订单项编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long orderId;

    @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "3072")
    private Long productId;

    @Schema(description = "商品SKU编号", example = "4096")
    private Long skuId;

    @Schema(description = "商品名称", example = "iPhone 15 Pro")
    private String productName;

    @Schema(description = "商品图片", example = "https://example.com/product.jpg")
    private String productImage;

    @Schema(description = "商品规格", example = "256GB 深空黑色")
    private String productSpec;

    @Schema(description = "商品单价", example = "999.00")
    private BigDecimal productPrice;

    @Schema(description = "购买数量", example = "2")
    private Integer quantity;

    @Schema(description = "小计金额", example = "1998.00")
    private BigDecimal totalAmount;

    @Schema(description = "优惠金额", example = "100.00")
    private BigDecimal discountAmount;

    @Schema(description = "实付金额", example = "1898.00")
    private BigDecimal payAmount;

    @Schema(description = "重量(kg)", example = "0.5")
    private BigDecimal weight;

    @Schema(description = "体积(cm³)", example = "500")
    private BigDecimal volume;

    @Schema(description = "商品分类", example = "电子产品")
    private String category;

    @Schema(description = "商品品牌", example = "Apple")
    private String brand;

    @Schema(description = "备注", example = "用户备注信息")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
